/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.maps.sample.hellomaps.client; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.maps.client.MapType; import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.event.EarthInstanceHandler; import com.google.gwt.maps.client.geom.LatLng; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Panel; /** * Demo the Google Earth Plugin. */ public class EarthPluginDemo extends MapsDemo { private static HTML descHTML = null; private static final String descString = "<p>" + "Creates a 500 x 500 pixel map viewport centered on the Googleplex in Mountain View, CA USA. " + "Attempts to invoke the Google Earth plugin (not available on all browsers.)</p>"; public static MapsDemoInfo init() { return new MapsDemoInfo() { @Override public MapsDemo createInstance() { return new EarthPluginDemo(); } @Override public HTML getDescriptionHTML() { if (descHTML == null) { descHTML = new HTML(descString); } return descHTML; } @Override public String getName() { return "Earth Plugin"; } }; } private MapWidget map; public EarthPluginDemo() { Panel panel = new FlowPanel(); map = new MapWidget(LatLng.newInstance(37.42317, -122.08364), 16); map.setSize("500px", "500px"); map.setUIToDefault(); map.addMapType(MapType.getEarthMap()); map.setCurrentMapType(MapType.getEarthMap()); panel.add(map); initWidget(panel); map.getEarthInstance(new EarthInstanceHandler() { public void onEarthInstance(EarthInstanceEvent event) { final JavaScriptObject earth = event.getEarthInstance(); if (earth == null) { Window.alert("Failed to init earth plugin"); } else { /* * Create a marker. The timer is set to give the earth plugin a chance * to position to the proper point on the map. */ new Timer() { @Override public void run() { createPlacemark(earth); } }.schedule(1000); } } }); } /** * Part of a sample ripped out of the Google Earth documentation. See {@link * "http://code.google.com/apis/earth/documentation/introduction.html"}. * * @param ge The Google Earth Instance */ private native void createPlacemark(JavaScriptObject ge) /*-{ var placemark = ge.createPlacemark(''); placemark.setName("You are at Google"); ge.getFeatures().appendChild(placemark); // Create style map for placemark var normal = ge.createIcon(''); normal.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png'); var iconNormal = ge.createStyle(''); iconNormal.getIconStyle().setIcon(normal); var highlight = ge.createIcon(''); highlight.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png'); var iconHighlight = ge.createStyle(''); iconHighlight.getIconStyle().setIcon(highlight); var styleMap = ge.createStyleMap(''); styleMap.setNormalStyle(iconNormal); styleMap.setHighlightStyle(iconHighlight); placemark.setStyleSelector(styleMap); // Create point var la = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND); var point = ge.createPoint(''); point.setLatitude(la.getLatitude()); point.setLongitude(la.getLongitude()); placemark.setGeometry(point); }-*/; }